package corejava;


public class JoinNumbers4 {//O(log(n))
     //计算从 1 到指定数字 n 连接成字符串后的总长度(O(log(n)))

    public static void main(String[] args) {
        // 定义要计算的最大数字 n
        long n = 999999999999L;
        // 初始化总长度 s 为 0
        long s = 0;
        // 初始化 t 为 9，代表一位数的数量；w 为 1，代表当前处理数字的位数
        long t = 9, w = 1;
        // 当 t 小于等于 n 时，继续循环
        while (t <= n) {
            // 累加当前位数的数字对总长度的贡献
            s += w * t;
            // 更新 t 为下一位数的最大数量
            t = t * 10;
            // 位数加 1
            w++;
        }
        // 处理剩余的数字，计算它们对总长度的贡献并累加到 s 中
        s += (long) ((n + 1 - Math.pow(10, w - 1)) * w);
        // 输出从 1 到 n 连接成字符串后的总长度
        System.out.println(s);
    }
}
